Score Matching的改进
2025-06-05
〔note〕
#论文笔记
#Score Matching
#NCSB
#Diffusion Model
#diff_series
朴素的Score
Matching存在的问题
Score
Matching通过优化以下目标,用一个模型sθ(x)拟合真实分布对样本的对数梯度∇xlogp(x),也就是score函数s(x)
J(θ)=Ex∼p(x)[∥sθ(x)∥2−2∇xsθ(x)]
通过模拟Langevin方程,我们无需知道具体的概率密度,就能从中采样。既然这套方法可以建模概率分布,就能用来做生成模型。
但由于本质上score matching的优化目标是最小化MSE
J(θ)=Ex∼pdata(x)∥sθ(x)−∇xlogpdata(x)∥2
对于p(x)较大的区域,这一损失较为准确,但对于p(x)较小的区域,损失较小,建模不准确。
Noise Conditional
Score-Based Model
NCSB的方法就是,用高斯噪声ϵ∼N(0,σ2)干扰输入样本,这样我们采样的分布就从原始的p(x)变成了pσ(x)。高斯噪声让pσ(x)比p(x)更加“平均”,噪声越大,就越“平均”,这样就能缓解p(x)在小概率区域建模不够精确的问题。
但是score
matching的对象从几乎无噪声的原始分布,变成了带噪声的分布。我们肯定不想学习一个噪声很大的分布。噪声太小,无法有效缓解建模不精确的问题,噪声太大,学出来的东西又没有用。
于是NCSB的方法就是,准备一系列噪声,方差为σ0,σ1,…,σT.
其中σ0特别小,以至于pσ0(x)和p(x)基本一样。σT特别大,以至于噪声比原始分布要大,pσT(x)≈N(0,σT2)
模型拟合的函数从sθ(x)变成了sθ(x,i)
对于每个i,要优化
Ji(θ)=Ex∼pσi(x)∥sθ(x)−∇xlogpσi(x)∥2
最终的目标就是各个i的加权平均,权重λi可以直接取σi
J(θ)=i∑λiJi(θ)=i∑σiJi(θ)
那么如何采样呢?先初始化一个样本,按朗之万动力学模拟噪声较大的分布,然后逐渐减小噪声,退火到原始分布上。大噪声的低概率区域是较为准确的,小噪声的更接近原始分布。这样我们就能避免样本困在模拟不准确的低概率区域。
噪声的选取和模型的选择
噪声选择指数增长的序列,模型用UNet,就能在图像生成任务上取得还不错的结果。
Ref
https://yang-song.net/blog/2021/score/